/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 *
 * @author AMOR
 */
public class Conexao {
    
/**
     * Metodo invocado para criar uma conexao com o banco de dados
     * @return Conexao (conexao)
     * @throws LivrariaDAOException
     */
    public static Connection getConnection() throws ProjetoDAOException {
        try {
         
            Class.forName("org.postgresql.Driver");                             // Driver do banco de dados
            String bd = "jdbc:postgresql://localhost:5432/projetoEad";      // URL para o banco de dados
            String usr = "postgres";                                            // Usuario para o banco de dados
            String pswrd = "1234"; 
             /*
             // Senha para o banco de dados
            Class.forName("com.mysql.jdbc.Driver");                             // Driver do banco de dados
            String bd = "jdbc:mysql://localhost/programacaoWeb";      // URL para o banco de dados
            String usr = "root";                                            // Usuario para o banco de dados
            String pswrd = "";
               */
             
            return DriverManager.getConnection(bd, usr, pswrd);                 //Parametros para a conexao
        } catch (Exception e) {                                                 //Em caso de erro/excecao
            throw new ProjetoDAOException(e.getMessage());
        }
    }


    // Metodos estaticos podem ser acessados sem que a classe seja instanciada
    /**
     * Metodo chamado para chamar o metodo para fechar conexao.
     * @param conn
     * @param stat
     * @param rs
     * @throws LivrariaDAOException
     */
    public static void closeConnection(Connection conn, Statement stat, ResultSet rs)
            throws ProjetoDAOException {
        close(conn, stat, rs);
    }

    /**
     * Metodo chamado para chamar o metodo para fechar conexao.
     * @param conn
     * @param stat
     * @throws LivrariaDAOException
     */
    public static void closeConnection(Connection conn, Statement stat)
            throws ProjetoDAOException {
        close(conn, stat, null);
    }

    /**
     * Metodo chamado para chamar o metodo para fechar conexao.
     * @param conn
     * @throws LivrariaDAOException
     */
    public static void closeConnection(Connection conn) throws ProjetoDAOException {
        close(conn, null, null);
    }

    /**
     * Metodo chamado para fechar conexao.
     * @param conn
     * @param stat
     * @param rs
     * @throws LivrariaDAOException
     */
    private static void close(Connection conn, Statement stat, ResultSet rs)
            throws ProjetoDAOException {
        try {
            if (conn != null) conn.close();
            if (stat != null) stat.close();
            if (rs != null) rs.close();
        } catch (Exception e) {
            throw new ProjetoDAOException(e.getMessage());
        }
    }


}


